/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controlador;

import connection.Connection;
import dao.EntidadesvinculadasJpaController;
import dao.exceptions.PreexistingEntityException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManagerFactory;
import modelo.Entidadesvinculadas;
import modelo.EntidadesvinculadasPK;
import modelo.Proyecto;

/**
 *
 * @author Fabian
 */
@ManagedBean(name = "ControladorEntidades")
@SessionScoped
public class ControladorEntidades {

    private List<Entidadesvinculadas> listaentidades;
    private EntityManagerFactory factory;
    private String txtNombre;
    private String txtTelefono;
    private String txtDireccion;
    private String txtCiudad;
    private String txtPaginaWeb;
    private String txtEmail;

    public List<Entidadesvinculadas> getListaentidades() {
        return listaentidades;
    }

    public void setListaentidades(List<Entidadesvinculadas> listaentidades) {
        this.listaentidades = listaentidades;
    }

    public ControladorEntidades() {
    }

    public String getTxtNombre() {
        return txtNombre;
    }

    public void setTxtNombre(String txtNombre) {
        this.txtNombre = txtNombre;
    }

    public String getTxtTelefono() {
        return txtTelefono;
    }

    public void setTxtTelefono(String txtTelefono) {
        this.txtTelefono = txtTelefono;
    }

    public String getTxtDireccion() {
        return txtDireccion;
    }

    public void setTxtDireccion(String txtDireccion) {
        this.txtDireccion = txtDireccion;
    }

    public String getTxtCiudad() {
        return txtCiudad;
    }

    public void setTxtCiudad(String txtCiudad) {
        this.txtCiudad = txtCiudad;
    }

    public String getTxtPaginaWeb() {
        return txtPaginaWeb;
    }

    public void setTxtPaginaWeb(String txtPaginaWeb) {
        this.txtPaginaWeb = txtPaginaWeb;
    }

    public String getTxtEmail() {
        return txtEmail;
    }

    public void setTxtEmail(String txtEmail) {
        this.txtEmail = txtEmail;
    }
    
    public void crearEntidad(){
        factory = Connection.getEmf();
        EntidadesvinculadasJpaController daoEntidades = new EntidadesvinculadasJpaController(factory);
        ControladorProyecto controla = (ControladorProyecto) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("ControladorProyecto");
        Proyecto p = controla.getProyecto();
        Entidadesvinculadas entidad= new Entidadesvinculadas();
        EntidadesvinculadasPK pk= new EntidadesvinculadasPK();
        pk.setIdproyecto(p.getIdproyecto());
        pk.setNombre(txtNombre);
        entidad.setEntidadesvinculadasPK(pk);
        entidad.setTelefono(txtTelefono);
        entidad.setDireccion(txtDireccion);
        entidad.setCiudad(txtCiudad);
        entidad.setPaginaweb(txtPaginaWeb);
        entidad.setEmail(txtEmail);
        entidad.setProyecto(p);
        
        
        try {
            daoEntidades.create(entidad);
            FacesContext context = FacesContext.getCurrentInstance();  
            context.addMessage(null, new FacesMessage("Vincular Entidad", "La operación ha sido exitosa" ));                       
        } catch (PreexistingEntityException ex) {
            FacesContext context = FacesContext.getCurrentInstance();  
            context.addMessage(null, new FacesMessage("Vincular Entidad", "No se pudo vincular la entidad" ));            
            Logger.getLogger(ControladorEntidades.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            FacesContext context = FacesContext.getCurrentInstance();  
            context.addMessage(null, new FacesMessage("Vincular Entidad", "La operacion fue interrumpida" ));
            Logger.getLogger(ControladorEntidades.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    
    }

    public void cargarEntidades() {

        factory = Connection.getEmf();
        EntidadesvinculadasJpaController daoEntidades = new EntidadesvinculadasJpaController(factory);
        ControladorProyecto controla = (ControladorProyecto) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("ControladorProyecto");
        Proyecto p = controla.getProyecto();
        List<Entidadesvinculadas> entidades = new ArrayList<Entidadesvinculadas>();
        entidades = daoEntidades.findEntidadesvinculadasEntities();
        List<Entidadesvinculadas> aux = new ArrayList<Entidadesvinculadas>();

        for (int i = 0; i < entidades.size(); i++) {
            if (entidades.get(i).getProyecto().getIdproyecto().equals(p.getIdproyecto())) {
                aux.add(entidades.get(i));
            }

        }
        setListaentidades(aux);


    }
}
